class SyncHook { // 钩子 是同步的

  constructor(args) { // args => ['name']
    this.tasks = [];

  }

  tap(name, task) {// 事件名字 事件方法
    this.tasks.push(task);
  }

  call(...args) {
    this.tasks.forEach((task) => task(...args));
  }

}

let hook = new SyncHook(['name']);
hook.tap('react', function (name) {
  console.log('react', name);
});

hook.tap('vue', function (name) {
  console.log('vue', name);
});

hook.call('gzw');
